package com.demo.newhutool;

import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;

import java.util.Calendar;

public class DateUtilDemo {
    public static void main(String[] args) {
        //当前时间
        DateTime date = DateUtil.date();
        //当前时间
        DateTime date1 = DateUtil.date(Calendar.getInstance());
        //当前时间
        DateTime date2 = DateUtil.date(System.currentTimeMillis());
        //当前时间字符串，格式：yyyy-MM-dd HH:mm:ss
        String now = DateUtil.now();
        //当前日期字符串，格式：yyyy-MM-dd
        String today= DateUtil.today();

        System.out.println(date);
        System.out.println(date1);
        System.out.println(date2);
        System.out.println(now);
        System.out.println(today);

        //时间格式的转换
        //可以识别的格式
        //yyyy/MM/dd HH:mm:ss
        //yyyy.MM.dd HH:mm:ss
        //yyyy年MM月dd日 HH时mm分ss秒
        //yyyy-MM-dd
        //yyyy/MM/dd
        //yyyy.MM.dd
        //HH:mm:ss
        //HH时mm分ss秒
        //yyyy-MM-dd HH:mm
        //yyyy-MM-dd HH:mm:ss.SSS
        //yyyyMMddHHmmss
        //yyyyMMddHHmmssSSS
        //yyyyMMdd
        //EEE, dd MMM yyyy HH:mm:ss z
        //EEE MMM dd HH:mm:ss zzz yyyy
        //yyyy-MM-dd'T'HH:mm:ss'Z'
        //yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
        //yyyy-MM-dd'T'HH:mm:ssZ
        //yyyy-MM-dd'T'HH:mm:ss.SSSZ

        String dateStr = "2017年03月01日";
        DateTime parse = DateUtil.parse(dateStr);
        System.out.println(parse);

        String dateStr1 = "2017-03-01";
        DateTime parse1 = DateUtil.parse(dateStr1, "yyyy-MM-dd");
        System.out.println(parse1);

        System.err.println("-------------------------------------------------------------");



        String dateStr3 = "2017-03-01";
        DateTime parse2 = DateUtil.parse(dateStr3);

        //结果 2017/03/01
        String format = DateUtil.format(parse2, "yyyy/MM/dd");

        //常用格式的格式化，结果：2017-03-01
        String formatDate = DateUtil.formatDate(parse2);

        //结果：2017-03-01 00:00:00
        String formatDateTime = DateUtil.formatDateTime(parse2);

        //结果：00:00:00
        String formatTime = DateUtil.formatTime(parse2);

        System.out.println(format+"--"+formatDate+"--"+formatDateTime+"--"+formatTime);

        //日期时间偏移
        String dateStr2 = "2017-03-01 22:33:23";
        DateTime parse3 = DateUtil.parse(dateStr2);

        //结果：2017-03-03 22:33:23
        DateTime offset = DateUtil.offset(parse3, DateField.DAY_OF_MONTH, 2);

        //常用偏移，结果：2017-03-04 22:33:23
        DateTime newDate2 = DateUtil.offsetDay(parse3, 3);

        //常用偏移，结果：2017-03-01 19:33:23
        DateTime newDate3 = DateUtil.offsetHour(parse3, -3);

        System.out.println(offset+"--"+newDate2+"--"+newDate3);

        //针对当前时间，提供的简化偏移方法
        //昨天
        System.out.println(DateUtil.yesterday());
        //明天
        System.out.println(DateUtil.tomorrow());
        //上周
        System.out.println(DateUtil.lastWeek());
        //下周
        System.out.println(DateUtil.nextWeek());
        //上个月
        System.out.println(DateUtil.lastMonth());
        //下个月
        System.out.println(DateUtil.nextMonth());


        //两个时间段之间的差值
        String dateStr4 = "2017-03-01 22:33:23";
        DateTime parse4 = DateUtil.parse(dateStr4);

        String dateStr5 = "2017-04-01 23:33:23";
        DateTime parse5 = DateUtil.parse(dateStr5);

        //相差一个月，31天
        long betweenDay = DateUtil.between(parse4, parse5, DateUnit.DAY);
        System.out.println(betweenDay);














    }


}
